package ex02.programa;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ex02.db.Conexion;
import ex02.db.GestorConsultas;
import ex02.db.ProcesadorFilas;
import ex02.entidades.Autor;
import ex02.entidades.Libro;

public class Programa {

	static {

		Conexion.setURL("jdbc:mysql://localhost:3306/Libros?user=root&password=toor");
	}

	public static void main(String[] args) {

		String sql1 = "SELECT * FROM libros";

		for (Libro libro : recuperarLibros(sql1)) {
			System.out.println(libro);
		}
		String sql2 = "SELECT * FROM autores";
		for (Autor autor : recuperarAutores(sql2)) {
			System.out.println(autor);
		}
		Conexion.desconecta();
	}

	private static List<Autor> recuperarAutores(String sql) {
		final List<Autor> autores = new ArrayList<Autor>();
		GestorConsultas gestorConsultas = new GestorConsultas(
				Conexion.getConexion());

		gestorConsultas.consulta(sql, new ProcesadorFilas() {
			@Override
			public void procesarFila(ResultSet rs) throws SQLException {
				int codAut = rs.getInt(1);
				String nombre = rs.getString(2);
				String dir = rs.getString(3);
				String tel = rs.getString(4);

				autores.add(new Autor(codAut, nombre, dir, tel));
			}
		});

		return autores;
	}

	private static List<Libro> recuperarLibros(String sql) {
		final List<Libro> libros = new ArrayList<Libro>();
		GestorConsultas gestorConsultas = new GestorConsultas(
				Conexion.getConexion());
		gestorConsultas.consulta(sql, new ProcesadorFilas() {
			@Override
			public void procesarFila(ResultSet rs) throws SQLException {
				int codlib = rs.getInt(1);
				String isbn = rs.getString(2);
				String titulo = rs.getString(3);
				String editorial = rs.getString(4);
				Date fecha = rs.getDate(5);
				libros.add(new Libro(codlib, isbn, titulo, editorial, fecha));
			}
		});

		return libros;
	}

}
